package ricky.quadtree
{
	import flash.geom.Rectangle;	

	/**
	 * 四元数的叶子节点
	 */
	public class Leaf extends Rectangle
	{

		public function Leaf()
		{
			
		}
		
		/**
		 * 从节点中删除对象
		 */
		public function remove(obj:Object):Boolean
		{
			if(_objects!=null)
			{
				var i:int=_objects.indexOf(obj);
				if(i>=0)
				{
					_objects.splice(i,1);
					return true;
				}
			}
			return false;
				
		}
		
		/**
		 * 清除节点中的对象
		 */
		public function clear():void
		{
			if(_objects!=null)
				_objects.length=0;
		}
		
		/**
		 * 添加对象到节点
		 */
		public function add(obj:Object):Boolean
		{
			if(_objects==null)
				_objects=new Array();
				
			var i:int=_objects.indexOf(obj);
			if(i==-1)
			{
				_objects.push(obj);
				return true;
			}
			
			return false;
		}
		
		/**
		 * 节点包含的对象数量
		 */
		public function get length():int
		{
			if(this.objects)
				return objects.length;
			else
				return 0;
		}
		
		/**
		 * 包含的对像
		 */
		public function get objects():Array
		{
			return _objects;
		}

		public function get attr():int
		{
			return _attr;
		}

		public function set attr(value:int):void
		{
			_attr = value;
		}

		/**
		 * 能否穿越
		 */
		public function get traversable():Boolean
		{
			return _traversable;
		}

		public function set traversable(value:Boolean):void
		{
			_traversable = value;
		}

		/**
		 * 寻路用的f值
		 */
		public function get f():int
		{
			return _f;
		}

		public function set f(value:int):void
		{
			_f = value;
		}


		//私有成员
		private var _objects:Array;//包含的对象
		private var _attr:int;//属性
		private var _traversable:Boolean;//能否穿越
		private var _f:int;//寻路用的F值；

		public override function toString():String
		{
			return "x="+this.x+",y="+this.y+",f="+_f+",traversable="+_traversable;
		}
	}
}